
/**
 * 二次封装ajax
 * @param url 请求地址
 * @param data 请求参数
 * @param success 请求成功函数
 * @param cache 是否缓存
 * @param async 是否异步
 * @param type 请求类型
 * @param dataType 服务器返回类型
 * @param error 请求失败函数
 * @param isFile 是否文件上传
 */
function ajax(url,data,success, cache, async, type, dataType, error,isFile) {
    var type = type || 'post';//请求类型
    var dataType = dataType || 'json';//接收数据类型
    var async = async || true;//异步请求
    var cache = cache || false;//浏览器历史缓存
    var isFile = isFile || false;
    // 请求成功默认函数
    var success = success || function (data) {
        //判断服务器的返回状态  根据后台自定义的ApiResult返回对象进行解析
        if(data.code===1){
            toastr.success(data.msg);
            setTimeout(function () {
                // 判断是否存在返回地址
                if(data.callback){
                    location.replace(data.callback);
                }
            },1500);
        }else{
            //操作不成功不做操作
            toastr.warning(data.msg);
        }
    };
    var error = error || function (data) {
        toastr.warning("操作出现异常");
    };
    toastr.options = {
        "closeButton": false,
        "debug": false,
        "newestOnTop": false,
        "progressBar": true,
        "positionClass": "toast-top-center",
        "preventDuplicates": false,
        "onclick": null,
        "showDuration": "300",
        "hideDuration": "1000",
        "timeOut": "1500",
        "extendedTimeOut": "1000",
        "showEasing": "swing",
        "hideEasing": "linear",
        "showMethod": "fadeIn",
        "hideMethod": "fadeOut"
    };
    if(isFile){
        toastr.info("文件提交");
        $.ajax({
            'url': url,
            'data': data,
            'cache': cache,
            'type': type,
            'dataType': dataType,
            'async': async,
            'success': success,
            'error': error,
            'processData':false,
            'contentType':false,
            'jsonpCallback': 'jsonp' + (new Date()).valueOf().toString().substr(-4),
            'beforeSend': function () {
            },
            complete: function () {
            }
        });
    }else{
        $.ajax({
            'url': url,
            'data': data,
            'cache': cache,
            'type': type,
            'dataType': dataType,
            'async': async,
            'success': success,
            'error': error,
            'jsonpCallback': 'jsonp' + (new Date()).valueOf().toString().substr(-4),
            'beforeSend': function () {
            },
            complete: function () {
            }
        });
    }
}

/**
 *
 * @param url
 * @param data
 * @param success
 * @param cache
 */
function formAjax(url,data,success,cache) {
    cache = cache || true;
    ajax(url, data, success, cache,false,'post','json');
}

/**
 * formAjax
 * @param url
 * @param data
 * @param success
 * @param cache
 */
function formFileAjax(url,data,success,cache) {
    ajax(url, data, success, cache,false,'post','json',null,true);
}

/**
 *
 * @param url
 * @param data
 * @param success
 * @param cache
 * @param async
 */
function postAjax(url,data,success,cache,async) {
    cache = cache || true;
    async = async || false;
    ajax(url,data,success,cache,async,'post','json')
}

/**
 *
 * @param url
 * @param data
 * @param success
 * @param cache
 */
function getAjax(url,data,success, cache) {
    ajax(url+formatParams(data),{}, success,cache, false, 'get','json');
}

// jsonp跨域请求(get方式提交)
function jsonpGet(url, success, cache) {
    ajax(url, {}, success, cache, false, 'get','jsonp');
}

//jsonp跨域请求(get方式提交)
function jsonpPost(url,data,success, cache) {
    ajax(url,data, success, cache, false, 'post','jsonp');
}


//格式化参数
function formatParams(data) {
    var arr = [];
    for (var name in data) {
        arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name]));
    }
    arr.push(("v=" + Math.random()).replace(".", ""));
    return arr.join("&");
}